package com.loctek.importexport.mvp.presenter;

import com.loctek.importexport.App;
import com.loctek.importexport.base.BasePresenter;
import com.loctek.importexport.bean.getproductResponse;
import com.loctek.importexport.bean.getstoresiteResponse;
import com.loctek.importexport.bean.intostoresiteResponse;
import com.loctek.importexport.bean.outstoresiteResponse;
import com.loctek.importexport.mvp.view.OutHousingView;
import com.loctek.importexport.mvp.view.WareHousingView;

import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

/**
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃  神兽保佑
 * 　　　　┃　　　┃  代码无bug
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━感觉萌萌哒━━━━━━
 * <p>
 * 作者：司海林
 * 邮箱：sihailin@sina.cn
 * 时间：2018/5/31
 * 描述：
 */
public class OutHousingPersenter extends BasePresenter<OutHousingView> {
    public OutHousingPersenter(App app) {
        super(app);
    }


    /**
     * 获取产品信息
     *
     * @param barcode
     */
    public void getproduct(String barcode) {
        getView().showProgress();
        getAppComponent().getAPIService().getproduct("getproduct", getApp().getToken(), barcode)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<getproductResponse>() {
                    @Override
                    public void onCompleted() {
                        if (isViewAttached())
                            getView().onCompleted();
                    }

                    @Override
                    public void onError(Throwable e) {
                        e.printStackTrace();
                        if (isViewAttached()) {
                            getView().onError(e);
                        }
                    }

                    @Override
                    public void onNext(getproductResponse response) {
                        if (response.isSuccess()) {
                            getView().getproduct(response);
                        } else {
                            getView().showMsg(response.getMessage()+"");
                        }
                    }
                });
    }

    /**
     * 获取库位信息
     *
     * @param storesite
     */
    public void getstoresite(String storesite) {
        getView().showProgress();
        getAppComponent().getAPIService().getstoresite("getstoresite", getApp().getToken(), storesite)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<getstoresiteResponse>() {
                    @Override
                    public void onCompleted() {
                        if (isViewAttached())
                            getView().onCompleted();
                    }

                    @Override
                    public void onError(Throwable e) {
                        e.printStackTrace();
                        if (isViewAttached()) {
                            getView().onError(e);
                        }
                    }

                    @Override
                    public void onNext(getstoresiteResponse response) {
                        if (response.isSuccess()) {
                            getView().getstoresite(response);
                        } else {
                            getView().showMsg(response.getMessage()+"");
                        }
                    }
                });
    }


    /**
     * 出库
     *
     * @param storesite
     * @param barcode
     * @param num
     */
    public void outstoresite(String storesite, String barcode, int num) {
        getView().showProgress();
        getAppComponent().getAPIService().outstoresite("outstoresite", getApp().getToken(), storesite, barcode, num)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<outstoresiteResponse>() {
                    @Override
                    public void onCompleted() {
                        if (isViewAttached())
                            getView().onCompleted();
                    }

                    @Override
                    public void onError(Throwable e) {
                        e.printStackTrace();
                        if (isViewAttached()) {
                            getView().onError(e);
                        }
                    }

                    @Override
                    public void onNext(outstoresiteResponse response) {
                        if (response.isSuccess()) {
                            getView().outstoresite(response);
                        } else {
                            getView().showMsg(response.getMessage()+"");
                        }
                    }
                });
    }
}
